package com.cmict.data.system.service.portal;

import com.cmict.data.framework.common.pojo.PageResult;
import com.cmict.data.form.api.task.dto.SysFormDTO;
import com.cmict.data.system.controller.admin.portal.vo.*;
import com.cmict.data.system.dal.dataobject.portal.PortalDO;
import com.cmict.data.system.controller.admin.portal.vo.*;

import javax.validation.Valid;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 门户 Service 接口
 *
 * @author awesome
 */
public interface PortalService {

    /**
     * 创建门户
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createPortal(@Valid PortalCreateReqVO createReqVO);

    /**
     * 更新门户
     *
     * @param updateReqVO 更新信息
     */
    void updatePortal(@Valid PortalUpdateReqVO updateReqVO);

    /**
     * 删除门户
     *
     * @param id 编号
     */
    void deletePortal(Long id);

    /**
     * 根据menuid删除
     *
     * @param id 编号
     */
    PortalDO getPortalManageMenuId(Long id);

    /**
     * 删除门户-不关联menu
     *
     * @param id 编号
     */
    void deletePortalNoMenu(Long id);

    /**
     * 获得门户
     *
     * @param id 编号
     * @return 门户
     */
    PortalDO getPortal(Long id);

    /**
     * 获得门户列表
     *
     * @param ids 编号
     * @return 门户列表
     */
    List<PortalDO> getPortalList(Collection<Long> ids);

    /**
     * 获得门户分页
     *
     * @param pageReqVO 分页查询
     * @return 门户分页
     */
    PageResult<PortalDO> getPortalPage(PortalPageReqVO pageReqVO);

    /**
     * 获得门户列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 门户列表
     */
    List<PortalDO> getPortalList(PortalExportReqVO exportReqVO);

    PageResult<PortalRespVO> getPortalPageRelease(PortalPageReqVO reqVO);

    List<SysFormDTO> getTableNameList();

    BigDecimal getFunData(String fun, String fieldName, String tableName);

    List<Map<String,Object>> getFieldNameList(String sql, String type);

    Set<SysFormDTO> getUserFormList(Long userId);

    void batchDeletePortal(Collection<Long> ids);

    Object getFieldData(String fieldName, String tableName,String type);

    Object getChartData(String fieldNameX, String fieldNameY, String tableName, String type);

    /**
     * 获得门户-手机侧
     */
    Map<Object, Object> getMoveOne(String id,int isReference);
}
